// 开启一个node服务
const Expess = require("express");
const app = Expess(); // 初始程序
const bodyParser = require("body-parser"); // 使用中间件可以获取到post-body里的数据
app.use(bodyParser.urlencoded({ extended: true })); // 表单请求
app.use(bodyParser.json()); // json请求--post

// 开启端口--服务器接口
app.listen(8080, () => console.log("服务请求：http://localhost:8080/")); // 开启服务
// 开放跨域请求设置
app.all("*", function(req, res, next) {
  // req请求对象  res响应对象 next() 表示进入下一步，跳出当前模块的方法
  // 设置跨域白名单 可以使用cors模块，这里没使用
  res.header("Access-Control-Allow-Origin", "*");
  res.header(
    "Access-Control-Allow-Headers",
    "Content-Type,Content-Length, Authorization, Accept,X-Requested-With"
  );
  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
  /*
  1.请求方法的工作流程
    1.1 ajax第一发起握手【尝试连接】，这个阶段的method是OPTIONS
    1.2 当接口返回200告诉ajax说可以连接的时候，ajax才会真的将请求方式和参数传给接口
  */

  if (req.method === "OPTIONS") {
    res.sendStatus(200);
  } else {
    next();
  }
});
// 假数据---假设这里就是读取的数据库的数据
const data = require("./data.js");
// console.log(data);
// 进行真正的get请求处理
app.get("*", (req, res) => {
  // 取参数
  const query = req.query;
  const id = query.id;
  // 1.请求的是hot接口
  if (req.path === "/hot") {
    res.json({
      code: 1,
      msg: "请求成功！",
      data: data.hot
    });
  }
  // 1.1请求的是hot/text 获取小说的内容
  if (req.path === "/hot/text") {
    const item = data.hot.find(item => item.id == id);
    res.json(item);
  }
  // 2.请求的是public接口
  if (req.path === "/public") {
    res.json({
      code: 1,
      msg: "请求成功！",
     data: data.public
    });
  }
  // 2.1请求的是public/text 获取小说的内容
  if (req.path === "/public/text") {
    const item = data.public.find(item => item.id == id);
    res.json(item);
  }
  // 3.viP接口
  if (req.path === "/vip") {
    res.json({
      code: 1,
      msg: "请求成功！",
      data: data.vip
    });
  }
  // 2.1请求的是vip/text 获取小说的内容
  if (req.path === "/vip/text") {
    const item = data.vip.find(item => item.id == id);
    res.json(item);
  } else {
    res.json(data);
  }
});

// 登陆接口post
app.post("*", (req, res) => {
  // post参数用req.body获取
  switch (req.path) {
    // 登陆接口
    case "/login":
      // 后端经过简单验证之后，对比数据库的信息校验用户数据
      if (req.body.username && req.body.password) {
        res.json({ code: 1, msg: "登陆成功！" });
      } else {
        res.json({ code: 0, msg: "账户密码不正确" });
      }
      break;
    default:
      res.json("请求成功！");
  }
});
